Sponsor Architecture

MuviPe · The Playbook · concept & architecture

MuviPe µ

The sponsor side of MuviPe — Tiny cost. Massive reach. A sponsor pays to put a creative in front of the audience the Theatre already has, and every rupee of that has to be tracked, split, and reported back with the same rigour as a ticket.

6Lifecycle states
4Commission profile levels
2Ledgers, never merged
5GBFree storage
  1. 01RoleMuviPe µWhat a sponsor is, and the one thing Bunny's player doesn't do for you.
  2. 02LifecycleRegistrationThe states a sponsor account moves through before it can spend.
  3. 03DeliveryCreative → player → trackingHow a creative actually reaches a viewer, and what counts as billable.
  4. 04Full FlowCampaign → viewer → billingEverything end to end, for an in-stream ad and a banner ad separately — they aren't the same shape.
  5. 05CommissionProfile resolutionNot one flat rate — a chain that resolves to a default that's always defined.
  6. 06Wallet & LedgerTwo separate booksWhy sponsor money is never allowed to touch the ticket ledger.
  7. 07ReportingTwo different questionsWhat a sponsor sees, and why it's not the same view admin gets.
  8. 08StorageFree tier & overageWhat a sponsor's creative library costs to host, on the same terms as a producer's catalogue.

Where the producer sells access to a title, the sponsor pays for attention around one — a creative placed in front of the audience the Theatre already draws, priced and tracked with the same discipline as a ticket.

Player vs. decisioning

The player is the very last step: play this file, on this screen, now. Everything before that step — the actual work of running a sponsor product — is a separate layer that hands the player its answer and nothing more.

What each layer actually owns
PlayerDecisioning
Plays whatever file it's handedChooses which creative gets handed to it
No concept of a sponsor or a budgetChecks the sponsor still has budget left
No concept of "this viewer, again"Applies frequency capping per viewer
No concept of cost or payoutResolves the commission split, tracks spend
Reports back that it playedTurns that report into a billable event
One dumb step at the end of a long pipeline

Everything a sponsor product actually is — targeting, eligibility, budget, frequency capping, cost — happens before the player is ever involved. By the time the player receives anything, every decision has already been made; it just has to render the result.

A sponsor account isn't live the moment it's created — it's a state machine, the same way a producer account is granted rather than self-served. Registration collects legal/display name, contact, location, business category, website, and a tax identifier before anything moves forward.

REGISTERED EMAIL VERIFIED PROFILE COMPLETE REVIEW APPROVED ACTIVE Off-ramps, from review onward REJECTED SUSPENDED BLOCKED
Fig 1. Five states lead to active; three off-ramps can end the relationship at any later point, not just at review.
What each ordinary state means
StateMeaning
REGISTEREDLegal/display name, contact, country/state/city, business category, website, tax identifier submitted.
EMAIL_VERIFIEDConfirms the account holder is real.
PROFILE_COMPLETEDEvery registration field finished.
UNDER_REVIEWAwaiting an admin decision.
APPROVED → ACTIVECleared to run campaigns and spend.

A player only ever plays what it's told to. Everything before that — deciding which creative, for whom, within what budget — and everything after — knowing whether it actually played — is MuviPe's own layer, not something any playback capability provides on its own.

Creative library Decisioning eligibility · targeting budget · frequency cap Player Tracking beacons Billable event → commission
Fig 1. Decisioning and tracking are the two layers that don't exist inside any playback capability — they're where MuviPe actually owns the sponsor relationship.

What the player doesn't give you

Counted twice, on purpose

Playback beacons are counted client-side, but ad-blockers routinely drop them, which quietly undercounts real impressions. A second, server-side count taken at the moment a slot is decided — not when it's watched — exists purely to reconcile against that gap, so a sponsor's bill isn't at the mercy of whichever viewers happen to run an ad-blocker.

Registration, delivery, and the commission and billing machinery described next, tied together end to end for one actual viewing session. An in-stream ad and a banner ad are not the same shape — a banner has no duration, so it has no "skip" and no "fully watched" the way a video does. Two separate flows, not one flow with a checkbox.

In-stream (pre-roll / mid-roll)

Everything up to and including the player was already covered under Delivery. What follows fills in the piece that wasn't shown yet: what happens after the creative starts playing, and the three genuinely different things a viewer can do with it.

Sponsor creates campaign creative · targeting · budget · placement sits ready, in advance User opens a title Playback reaches an ad slot Decisioning tailored to THIS viewer, THIS session Player plays the creative Skipped early partial view Watched fully completion signal Campaign visit clicked through — any time tracked event → commission → ledger
Fig 1. Three genuinely different outcomes, not one event with a flag. A viewer can skip and still click through moments later — click isn't downstream of the other two, it's independent of them.
Three event types, one resolution path

Whichever of the three happens, the event still resolves through the same commission-profile chain described next, and lands in the same sponsor ledger. What differs is only the event type recorded and, eventually, what that type is worth — not the machinery that processes it. What each type is actually worth relative to the others isn't decided in this document; it's an admin-controlled rate, the same way the storage overage rate is.

Banner (static placement)

A banner has no duration to interrupt, so it has no skip and no "fully watched." It's on screen or it isn't, and the viewer either looked past it or clicked it.

Sponsor creates campaign banner creative · targeting · budget User reaches a banner placement — home, browse, interstitial Decisioning tailored to THIS viewer Banner shown Impression only shown, no interaction Campaign visit clicked through tracked → commission → ledger
Fig 2. Two outcomes instead of three — no duration means no skip and no completion, only whether the click happened.

Not one flat rate across every sponsor, and not a rate hand-set per creative either. The split is resolved at the moment of charge by walking up a chain until a profile is actually defined.

creative.commission_profile
   ↪ campaign.commission_profile
      ↪ placement default   (banner | pre-roll | sponsored-tile …)
         ↪ platform default        ← always defined
creative override usually null campaign override usually null placement default platform default always defined — the floor Same payout engine as the ticket tree, every time resolveAdCommission → existing owner / platform / service / distributor / GST split
Fig 1. Whichever level actually has a value wins — resolution stops at the first one found, walking right until it does.
One engine, not two

Resolving a sponsor commission doesn't invent new payout math — it walks this chain to a split, then hands off to the same engine that already pays out the ticket tree. Sponsor money and ticket money are computed differently but paid out through one mechanism.

A sponsor's spend is its own book, kept with the same discipline as the platform's user-facing ledger — but never the same book. Different money, different parties.

Sponsor's book sponsor_wallets sponsor_ledger — append-only campaign_ledger_allocations never merged The ticket engine's own book User wallets, tickets, commissions — different money, different parties
Fig 1. Two ledgers with the same discipline — append-only, reason-coded corrections — but no shared rows. A sponsor's spend and a user's earnings never sit in the same table.

A sponsor and an admin are asking genuinely different questions about the same inventory, so they get genuinely different views — never one dashboard with a role-based filter bolted on.

A sponsor's creative library isn't free to host either — every banner, video, or sponsored-tile asset uploaded gets stored on the same CDN a producer's titles live on. The rule is the same shape as the producer's, scaled to what a creative library actually needs.

5GBfree, per sponsor
∞uploads never blocked
₹/GBset by admin, not fixed

The allowance

How it's enforced

Sponsor uploads a creative Bunny CDN stores & reports size Added to sponsor's running total Total vs. 5GB free Under the line — no charge Over — warning shown accepted → overage billed
Fig 1. Identical decision shape to the producer's storage rule — only the free-tier number and what's being uploaded differ.
Same rate mechanism as the producer side

The overage rate here isn't a separate number the platform invents for sponsors — it tracks the same underlying CDN cost the producer overage rate does, set by admin and free to move when that cost does, rather than being fixed in the product and going stale.